﻿/*
 * Created by SharpDevelop.
 * User: CeCi
 * Date: 27/03/2014
 * Time: 07:17 p.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Data.OleDb;
using System.Data;
using System.Windows.Forms;
using Gestión_UTN.Entities;

namespace Gestión_UTN.daimpl
{
	/// <summary>
	/// Description of alumnodaimpl.
	/// </summary>
	public class alumnodaimpl:Gestión_UTN.da.alumnosda
	{
		public alumnodaimpl()
		{
		}
		
		public bool SaveAlumno(int dni, string nombre, string apellido, DateTime fechaNac, string direccion, int ciud_codPostal, int legajo)
		{
			bool ingresado = false;
			
			OleDbConnection conex = null;
			OleDbTransaction trans = null;
			
			try
			{
				conex = util.Conexion.conectarAccess();
				trans = null;
				
				if (null != conex) {
					
					string sql = "INSERT INTO alu_alumnos(alu_dni, alu_nombre, alu_apellido, alu_fechaNac, alu_direccion, ciu_codPostal, alu_legajo)" +
                    			"VALUES(@alu_dni, @alu_nombre, @alu_apellido, @alu_fechaNac, @alu_direccion, @ciu_codPostal, @alu_legajo)";
					
					OleDbCommand insertar = new OleDbCommand(sql,conex);
					
					conex.Open();
					trans = conex.BeginTransaction();
					
					object[] values = {dni,nombre,apellido,fechaNac,direccion,ciud_codPostal,legajo};
					
					insertar.Parameters.AddRange(values);
					
					insertar.ExecuteNonQuery();
					
					trans.Commit();
					
					ingresado = true;
					
					conex.Close();
				}
				
			} catch (Exception) {
				ingresado = false;
				trans.Rollback();
				conex.Close();
			}
			
			return ingresado;
		}
		
		public bool DeleteAlumno(int dni)
		{
			bool eliminado = false;
			
			OleDbConnection conex = null;
			OleDbTransaction trans = null;
			
			try
			{
				conex = util.Conexion.conectarAccess();
				trans = null;
				
				if (null != conex) {
					
					string sql = "DELETE FROM alu_alumnos WHERE alu_dni = @alu_dni";
					
					OleDbCommand eliminar = new OleDbCommand(sql,conex);
					
					conex.Open();
					
					trans = conex.BeginTransaction();
					
					eliminar.Parameters.AddWithValue("@alu_dni",dni);
					
					eliminar.ExecuteNonQuery();
					
					trans.Commit();
					
					eliminado = true;
					
					conex.Close();
				}
				
			} catch (Exception) {
				eliminado = false;
				trans.Rollback();
				conex.Close();
			}
			
			return eliminado;
		}
		
		public bool ModifyAlumno(int dni_anterior, int dni, string nombre, string apellido, DateTime fechaNac, string direccion, int ciud_codPostal, int legajo)
		{
			bool modificado = false;
			
			OleDbConnection conex = null;
			OleDbTransaction trans = null;
			
			try
			{
				conex = util.Conexion.conectarAccess();
				trans = null;
				
				if (null != conex) {
					
					string sql = "UPDATE alu_alumnos SET alu_dni = @alu_dni, alu_nombre = @alu_nombre, alu_apellido = @alu_apellido , " +
									"alu_fechaNac = @alu_fechaNac, alu_direccion = @alu_direccion, ciu_codPostal = @ciu_codPostal," +
									"alu_legajo = @alu_legajo WHERE alu_dni = @dni_anterior";
					
					OleDbCommand modificar = new OleDbCommand(sql,conex);
					
					conex.Open();
					trans = conex.BeginTransaction();
					
					object[] values = {dni,nombre,apellido,fechaNac,direccion,ciud_codPostal,legajo,dni_anterior};
					
					modificar.Parameters.AddRange(values);
					
					modificar.ExecuteNonQuery();
					
					trans.Commit();
					
					modificado = true;
					
					conex.Close();
				}
				
			} catch (Exception) {
				modificado = false;
				trans.Rollback();
				conex.Close();
			}
			
			return modificado;
		}
		
		public System.Data.DataTable FindAllAlumnos()
		{
			DataTable tablaAlumnos = null;
			
			OleDbConnection conex = null;
			
			try
			{
				conex = util.Conexion.conectarAccess();
				tablaAlumnos = new DataTable();
				
				if (null != conex) {
					
					string sql = "SELECT alu_dni, alu_nombre,alu_apellido,alu_fechaNac,alu_direccion," +
									"ciu_codPostal,ciu_nombre,alu_legajo FROM alu_alumnos alu,ciu_ciudades ciu " +
									"WHERE alu.ciu_codPostal = ciu.ciu_codPostal";
					
					 OleDbDataAdapter adaptador = new OleDbDataAdapter(sql, conex);
					 
					 conex.Open();
					 
					 adaptador.Fill(tablaAlumnos,"alumnos");
					
					 conex.Close();
				}
				
			} catch (Exception) {
				
				tablaAlumnos = null;
				conex.Close();
			}
			
			return tablaAlumnos;
		}
		
		public Gestión_UTN.Entities.Alumno FindAlumnoByDNI(int dni)
		{
			Alumno alumno = null;
			
			OleDbConnection conex = null;
			OleDbTransaction trans = null;
			
			try
			{
				conex = util.Conexion.conectarAccess();
				trans = null;
				
				if (null != conex) {
					
					string sql = "SELECT alu_dni, alu_nombre,alu_apellido,alu_fechaNac,alu_direccion," +
									"ciu_codPostal,alu_legajo FROM alu_alumnos " +
									"WHERE alu_dni = @alu_dni";
					
					OleDbCommand consulta = new OleDbCommand(sql,conex);
					
					conex.Open();
					trans = conex.BeginTransaction();
					 
					consulta.Parameters.AddWithValue("@alu_dni",dni);
					
					OleDbDataReader lector = consulta.ExecuteReader();
					
					alumno = new Alumno(Convert.ToInt16(lector[0].ToString()),lector[1].ToString(),lector[2].ToString(),
					                    Convert.ToDateTime(lector[3].ToString()),lector[4].ToString(),
					                    Convert.ToInt16(lector[5].ToString()),Convert.ToInt16(lector[6].ToString()));
					
					 conex.Close();
				}
				
			} catch (Exception) {
				
				trans.Rollback();
				alumno = null;
				conex.Close();
			}
			
			return alumno;
		}
		
		public Gestión_UTN.Entities.Alumno FindAlumnoByLegajo(int legajo)
		{
			Alumno alumno = null;
			
			OleDbConnection conex = null;
			OleDbTransaction trans = null;
			
			try
			{
				conex = util.Conexion.conectarAccess();
				trans = null;
				
				if (null != conex) {
					
					string sql = "SELECT alu_dni, alu_nombre,alu_apellido,alu_fechaNac,alu_direccion," +
									"ciu_codPostal,alu_legajo FROM alu_alumnos " +
									"WHERE alu_legajo = @alu_legajo";
					
					OleDbCommand consulta = new OleDbCommand(sql,conex);
					
					conex.Open();
					trans = conex.BeginTransaction();
					 
					consulta.Parameters.AddWithValue("@alu_legajo",legajo);
					
					OleDbDataReader lector = consulta.ExecuteReader();
					
					alumno = new Alumno(Convert.ToInt16(lector[0].ToString()),lector[1].ToString(),lector[2].ToString(),
					                    Convert.ToDateTime(lector[3].ToString()),lector[4].ToString(),
					                    Convert.ToInt16(lector[5].ToString()),Convert.ToInt16(lector[6].ToString()));
					
					 conex.Close();
				}
				
			} catch (Exception) {
				
				trans.Rollback();
				alumno = null;
				conex.Close();
			}
			
			return alumno;
		}
	}
}
